package written.test;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;

/**
 * @Author: Dang Qi
 * @Date: 2021/4/10  20:51
 * @Description:
 */
public class Jingdong3 {
    static Map<String, Integer> map = new HashMap<>();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] s1 = new int[n];
        int[] s2 = new int[n];
        for (int i = 0; i < n; i++){
            s1[i] = sc.nextInt();
            s2[i] = sc.nextInt();
        }
        for(int i = 0; i < n; i++){
            for(int j= i+1; j < n; j++){
                selectIndex(s1[i], s1[j], s2[i], s2[j]);
            }
        }
        HashMap<Integer, Integer> res = new HashMap<>();
        for(int i = 2; i <= n; i++){
            res.put(i,0);
        }
        for(Map.Entry<String, Integer> m : map.entrySet()){
            int tmp = compute(m.getValue());
            res.put(tmp, res.get(tmp) + 1);
        }

    }
    public  static int compute(int m){
        for(int i = 2; i<=2*m; i++){
            if(i * (i-1) == 2*m){
                return i;
            }
        }
        return -1;
    }
    public static void  selectIndex(int k1, int k2, int b1, int b2){
        double x= (b2-b1) / (k1-k2);
        double y = k1 * x + b1;
        if(check(x) && check(y) && x>=0 && y>=0){
            String tmp = x + " " +y;
            if(map.containsKey(tmp)){
                map.put(tmp, map.get(tmp) + 1);
            }else{
                map.put(tmp,1);
            }
        }
    }
    public static boolean check(double x){
        double b= x;
        int b1 = (int)x;
        if(b%b1== 0) return true;
        else return false;
    }
}
